const http = require('http');
const fs = require('fs');
const path = require('path');

const server = http.createServer()
server.listen(8044, () => {
    console.log('server running on port 8044')
})

server.on('request', (req, res) => {
    console.log('请求路径:', req.url)
    console.log('请求方式:', req.method)
    console.log('请求头:', req.headers)

    // get请求
    if (req.method.toLowerCase() === 'get') {
        let htmlPage = req.url.trim('/')
        console.log('当前文件名称:', htmlPage)
        let filename = path.join(__dirname,htmlPage)
        fs.readFile(filename, 'utf8', (err,data) => {
            if (err) {
                res.statusCode = 404;
                res.statusMessage = 'Not Found';
                res.setHeader('Content-Type', 'text/plain;charset=utf-8')
                res.end('Not Found')
            } else {
                res.statusCode = 200;
                res.statusMessage = 'OK';
                res.setHeader('Content-Type', 'text/html;charset=utf-8')
                res.end(data)
            }
        })
        return;

    }



    // req request的缩写是一个请求对象 所有的请求相关的内容都在这个req对象当中
    // res response的缩写是一个响应对象 所有的响应相关的内容都在这个res对象当中
    // res.write('hello'); // 表示向浏览器响应数据
    // res.write('world'); // 可以响应多次
    // res.end() // 表示所有的数据都响应完毕了

    // res.end('hello world123') // 相当于是res.write('hello world123') + res.end()
    // res.end('<p>这是一个段落标签...</p>')  // 直接向浏览器端响应数据


    // res.statusCode: 响应的的状态码 200 404 500   403表示禁止
    // res.statusMessage: 响应的状态信息， OK Not Found ,会根据statusCode自动设置

    // res.setHeader(name, value); 设置响应头信息， 比如content-type
    //res.setHeader('Content-Type','text/html;charset=utf-8')
    res.writeHead(200, {'Content-Type': 'text/plain'})
    res.write('data');  // 给浏览器发送请求体，可以调用多次，从而提供连续的请求体
    // res.end();  // 通知服务器，所有响应头和响应主体都已被发送，即服务器将其视为已完成
    res.end('hello world')  // 结束请求，并且响应一段内容，相当于: res.write(data) + res.end()
    console.log('这里是结束的消息')
})



